class Horario < ActiveRecord::Base

  # TODO que esto se setee por configuracion en BD o XML y no quede cableado en el codigo
  # las vacantes estipuladas para los horarios.
  VACANTES=12

  belongs_to :instructor
  
  has_many :alumnos, :class_name=>'Persona', :conditions=>['coeficiente_id=',Coeficiente::ALUMNO].join, :dependent=>:nullify
  has_many :exalumnos, :class_name=>'Persona', :conditions=>['coeficiente_id=',Coeficiente::EXALUMNO].join, :dependent=>:nullify
  
  # devuelve los alumnos que ocupan una vacante en PreYoga de este horario
  # esta funcion INCLUYE yogins con plan vip
  def alumnos_preYoga

    # tomo los aspirantes
    aspirantes = alumnos.find(:all, :conditions=>["grado_id=",Grado::ASPIRANTE].join, :order=>'nombres ASC')
    
    # y les agrego los yogins vip
    yogins = alumnos.find(:all, :conditions=>["grado_id>",Grado::ASPIRANTE].join, :order=>'nombres ASC')
    for y in yogins
      if y.es_vip? then
        aspirantes.push(y)
      end
    end
    
    return aspirantes
  end

  # devuelve los alumnos que ocupan una vacante en Yoga de este horario
  def alumnos_yoga
    return alumnos.find(:all, :conditions =>["grado_id>",Grado::ASPIRANTE].join, :order=>'nombres ASC')
  end


  def exalumnos_este_mes
    exalumnos.find(:all, :joins=>"JOIN evasions ON personas.id = evasions.persona_id", :conditions=>"MONTH(evasions.fecha)=MONTH(CURDATE()) AND YEAR(evasions.fecha)=YEAR(CURDATE())", :group=>"personas.id")
  end
end
